package cn.iocoder.lw.module.core.controller.admin.workorder.vo.workorder;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

@Schema(description = "管理后台 - 工单 Response VO")
@Data
public class CoreWorkOrderRespVO {

    @Schema(description = "工单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    private Long id;

    @Schema(description = "工单编号-自定义生成", requiredMode = Schema.RequiredMode.REQUIRED, example = "WO1234567890")
    private String orderNo;

    @Schema(description = "项目ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "12345")
    private Long projectId;

    @Schema(description = "项目名称", example = "阳光小区")
    private String projectName;

    @Schema(description = "房源ID", example = "12345")
    private Long houseId;

    @Schema(description = "房源地址", example = "阳光小区 1栋 2层 101房")
    private String houseAddress;

    @Schema(description = "设备编号", example = "12345")
    private Long deviceId;

    @Schema(description = "设备名称", example = "空调")
    private String deviceName;

    @Schema(description = "问题描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "空调不制冷")
    private String problemDescription;

    @Schema(description = "上门时间", example = "2023-12-01 14:00:00")
    private LocalDateTime doorToDoorTime;

    @Schema(description = "工单状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    private Integer status;

    @Schema(description = "工单状态名称", example = "待接单")
    private String statusName;

    @Schema(description = "维修前图片URL", example = "https://example.com/image1.jpg,https://example.com/image2.jpg")
    private String beforeRepairImages;

    @Schema(description = "维修后图片URL", example = "https://example.com/image3.jpg,https://example.com/image4.jpg")
    private String afterRepairImages;

    @Schema(description = "解决方案", example = "更换制冷剂")
    private String solution;

    @Schema(description = "故障描述", example = "空调压缩机故障")
    private String faultDescription;

    @Schema(description = "总费用", example = "300.00")
    private BigDecimal totalCost;

    @Schema(description = "发起人ID", example = "12345")
    private Long initiatorId;

    @Schema(description = "发起人姓名", example = "管理员")
    private String initiatorName;

    @Schema(description = "接单人ID", example = "12345")
    private Long assigneeId;

    @Schema(description = "接单人电话", example = "13888888888")
    private String assigneePhone;

    @Schema(description = "接单人姓名", example = "张师傅")
    private String assigneeName;

    @Schema(description = "备注", example = "客户要求尽快处理")
    private String remark;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    private LocalDateTime createTime;

    @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED)
    private LocalDateTime updateTime;

}